home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sh / Makefile < prev   
Encoding:
Makefile  |  2008-12-24  |  7.5 KB  |  237 lines

  1. #
  2. # arch/sh/Makefile
  3. #
  4. # Copyright (C) 1999  Kaz Kojima
  5. # Copyright (C) 2002 - 2008  Paul Mundt
  6. # Copyright (C) 2002  M. R. Brown
  7. #
  8. # This file is subject to the terms and conditions of the GNU General Public
  9. # License.  See the file "COPYING" in the main directory of this archive
  10. # for more details.
  11. #
  12. isa-y                    := any
  13. isa-$(CONFIG_SH_DSP)            := sh
  14. isa-$(CONFIG_CPU_SH2)            := sh2
  15. isa-$(CONFIG_CPU_SH2A)            := sh2a
  16. isa-$(CONFIG_CPU_SH3)            := sh3
  17. isa-$(CONFIG_CPU_SH4)            := sh4
  18. isa-$(CONFIG_CPU_SH4A)            := sh4a
  19. isa-$(CONFIG_CPU_SH4AL_DSP)        := sh4al
  20. isa-$(CONFIG_CPU_SH5)            := shmedia
  21.  
  22. ifeq ($(CONFIG_SUPERH32),y)
  23. isa-$(CONFIG_SH_DSP)            := $(isa-y)-dsp
  24. isa-y                    := $(isa-y)-up
  25. endif
  26.  
  27. cflags-$(CONFIG_CPU_SH2)        := $(call cc-option,-m2,)
  28. cflags-$(CONFIG_CPU_SH2A)        += $(call cc-option,-m2a,) \
  29.                        $(call cc-option,-m2a-nofpu,)
  30. cflags-$(CONFIG_CPU_SH3)        := $(call cc-option,-m3,)
  31. cflags-$(CONFIG_CPU_SH4)        := $(call cc-option,-m4,) \
  32.     $(call cc-option,-mno-implicit-fp,-m4-nofpu)
  33. cflags-$(CONFIG_CPU_SH4A)        += $(call cc-option,-m4a,) \
  34.                        $(call cc-option,-m4a-nofpu,)
  35. cflags-$(CONFIG_CPU_SH5)        := $(call cc-option,-m5-32media-nofpu,)
  36.  
  37. ifeq ($(cflags-y),)
  38. #
  39. # In the case where we are stuck with a compiler that has been uselessly
  40. # restricted to a particular ISA, a favourite default of newer GCCs when
  41. # extensive multilib targets are not provided, ensure we get the best fit
  42. # regarding FP generation. This is necessary to avoid references to FP
  43. # variants in libgcc where integer variants exist, which otherwise result
  44. # in link errors. This is intentionally stupid (albeit many orders of
  45. # magnitude less than GCC's default behaviour), as anything with a large
  46. # number of multilib targets better have been built correctly for
  47. # the target in mind.
  48. #
  49. cflags-y    += $(shell $(CC) $(KBUILD_CFLAGS) -print-multi-lib | \
  50.              grep nofpu | sed q | sed -e 's/^/-/;s/;.*$$//')
  51. endif
  52.  
  53. cflags-$(CONFIG_CPU_BIG_ENDIAN)        += -mb
  54. cflags-$(CONFIG_CPU_LITTLE_ENDIAN)    += -ml
  55.  
  56. cflags-y    += $(call cc-option,-mno-fdpic)
  57.  
  58. #
  59. # -Wa,-isa= tuning implies -Wa,-dsp for the versions of binutils that
  60. # support it, while -Wa,-dsp by itself limits the range of usable opcodes
  61. # on certain CPU subtypes. Try the ISA variant first, and if that fails,
  62. # fall back on -Wa,-dsp for the old binutils versions. Even without DSP
  63. # opcodes, we always want the best ISA tuning the version of binutils
  64. # will provide.
  65. #
  66. isaflags-y    := $(call as-option,-Wa$(comma)-isa=$(isa-y),)
  67.  
  68. isaflags-$(CONFIG_SH_DSP)        := \
  69.     $(call as-option,-Wa$(comma)-isa=$(isa-y),-Wa$(comma)-dsp)
  70.  
  71. cflags-y    += $(isaflags-y) -ffreestanding
  72.  
  73. cflags-$(CONFIG_MORE_COMPILE_OPTIONS)    += \
  74.     $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g')
  75.  
  76. OBJCOPYFLAGS    := -O binary -R .note -R .note.gnu.build-id -R .comment \
  77.            -R .stab -R .stabstr -S
  78.  
  79. # Give the various platforms the opportunity to set default image types
  80. defaultimage-$(CONFIG_SUPERH32)            := zImage
  81. defaultimage-$(CONFIG_SH_SH7785LCR)        := uImage
  82.  
  83. # Set some sensible Kbuild defaults
  84. KBUILD_DEFCONFIG    := shx3_defconfig
  85. KBUILD_IMAGE        := $(defaultimage-y)
  86.  
  87. #
  88. # Choosing incompatible machines durings configuration will result in
  89. # error messages during linking.
  90. #
  91. ifdef CONFIG_SUPERH32
  92. UTS_MACHINE    := sh
  93. LDFLAGS_vmlinux    += -e _stext
  94. else
  95. UTS_MACHINE    := sh64
  96. LDFLAGS_vmlinux    += --defsym phys_stext=_stext-$(CONFIG_PAGE_OFFSET) \
  97.            --defsym phys_stext_shmedia=phys_stext+1 \
  98.            -e phys_stext_shmedia
  99. endif
  100.  
  101. ifdef CONFIG_CPU_LITTLE_ENDIAN
  102. LDFLAGS_vmlinux        += --defsym 'jiffies=jiffies_64'
  103. LDFLAGS            += -EL
  104. else
  105. LDFLAGS_vmlinux        += --defsym 'jiffies=jiffies_64+4'
  106. LDFLAGS            += -EB
  107. endif
  108.  
  109. head-y            := arch/sh/kernel/init_task.o
  110. head-$(CONFIG_SUPERH32)    += arch/sh/kernel/head_32.o
  111. head-$(CONFIG_SUPERH64)    += arch/sh/kernel/head_64.o
  112.  
  113. core-y                += arch/sh/kernel/ arch/sh/mm/ arch/sh/boards/
  114. core-$(CONFIG_SH_FPU_EMU)    += arch/sh/math-emu/
  115.  
  116. # Mach groups
  117. machdir-$(CONFIG_SOLUTION_ENGINE)        += mach-se
  118. machdir-$(CONFIG_SH_HP6XX)            += mach-hp6xx
  119. machdir-$(CONFIG_SH_DREAMCAST)            += mach-dreamcast
  120. machdir-$(CONFIG_SH_SH03)            += mach-sh03
  121. machdir-$(CONFIG_SH_SECUREEDGE5410)        += mach-snapgear
  122. machdir-$(CONFIG_SH_RTS7751R2D)            += mach-r2d
  123. machdir-$(CONFIG_SH_7751_SYSTEMH)        += mach-systemh
  124. machdir-$(CONFIG_SH_EDOSK7705)            += mach-edosk7705
  125. machdir-$(CONFIG_SH_HIGHLANDER)            += mach-highlander
  126. machdir-$(CONFIG_SH_MIGOR)            += mach-migor
  127. machdir-$(CONFIG_SH_SDK7780)            += mach-sdk7780
  128. machdir-$(CONFIG_SH_X3PROTO)            += mach-x3proto
  129. machdir-$(CONFIG_SH_SH7763RDP)            += mach-sh7763rdp
  130. machdir-$(CONFIG_SH_SH4202_MICRODEV)        += mach-microdev
  131. machdir-$(CONFIG_SH_LANDISK)            += mach-landisk
  132. machdir-$(CONFIG_SH_TITAN)            += mach-titan
  133. machdir-$(CONFIG_SH_LBOX_RE2)            += mach-lboxre2
  134. machdir-$(CONFIG_SH_CAYMAN)            += mach-cayman
  135.  
  136. ifneq ($(machdir-y),)
  137. core-y    += $(addprefix arch/sh/boards/, \
  138.          $(filter-out ., $(patsubst %,%/,$(machdir-y))))
  139. endif
  140.  
  141. # Common machine type headers. Not part of the arch/sh/boards/ hierarchy.
  142. machdir-y    += mach-common
  143.  
  144. # Companion chips
  145. core-$(CONFIG_HD6446X_SERIES)    += arch/sh/cchips/hd6446x/
  146.  
  147. #
  148. # CPU header paths
  149. #
  150. # These are ordered by optimization level. A CPU family that is a subset
  151. # of another (ie, SH-2A / SH-2), is picked up first, with increasing
  152. # levels of genericness if nothing more suitable is situated in the
  153. # hierarchy.
  154. #
  155. # As an example, in order of preference, SH-2A > SH-2 > common definitions.
  156. #
  157. cpuincdir-$(CONFIG_CPU_SH2A)    += cpu-sh2a
  158. cpuincdir-$(CONFIG_CPU_SH2)    += cpu-sh2
  159. cpuincdir-$(CONFIG_CPU_SH3)    += cpu-sh3
  160. cpuincdir-$(CONFIG_CPU_SH4)    += cpu-sh4
  161. cpuincdir-$(CONFIG_CPU_SH5)    += cpu-sh5
  162. cpuincdir-y            += cpu-common    # Must be last
  163.  
  164. drivers-y            += arch/sh/drivers/
  165. drivers-$(CONFIG_OPROFILE)    += arch/sh/oprofile/
  166.  
  167. boot := arch/sh/boot
  168.  
  169. cflags-y    += $(foreach d, $(cpuincdir-y), -Iarch/sh/include/$(d)) \
  170.            $(foreach d, $(machdir-y), -Iarch/sh/include/$(d))
  171.  
  172. KBUILD_CFLAGS        += -pipe $(cflags-y)
  173. KBUILD_CPPFLAGS        += $(cflags-y)
  174. KBUILD_AFLAGS        += $(cflags-y)
  175.  
  176. LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
  177.  
  178. libs-$(CONFIG_SUPERH32)        := arch/sh/lib/    $(libs-y)
  179. libs-$(CONFIG_SUPERH64)        := arch/sh/lib64/ $(libs-y)
  180. libs-y                += $(LIBGCC)
  181.  
  182. PHONY += maketools FORCE
  183.  
  184. maketools:  include/linux/version.h FORCE
  185.     $(Q)$(MAKE) $(build)=arch/sh/tools include/asm-sh/machtypes.h
  186.  
  187. all: $(KBUILD_IMAGE)
  188.  
  189. zImage uImage uImage.srec vmlinux.srec: vmlinux
  190.     $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
  191.  
  192. compressed: zImage
  193.  
  194. archprepare: maketools arch/sh/lib64/syscalltab.h
  195.  
  196. archclean:
  197.     $(Q)$(MAKE) $(clean)=$(boot)
  198.  
  199. define archhelp
  200.     @echo '* zImage                - Compressed kernel image'
  201.     @echo '  vmlinux.srec               - Create an ELF S-record'
  202.     @echo '  uImage                 - Create a bootable image for U-Boot'
  203.     @echo '  uImage.srec                 - Create an S-record for U-Boot'
  204. endef
  205.  
  206. define filechk_gen-syscalltab
  207.        (set -e; \
  208.     echo "/*"; \
  209.     echo " * DO NOT MODIFY."; \
  210.     echo " *"; \
  211.     echo " * This file was generated by arch/sh/Makefile"; \
  212.     echo " * Any changes will be reverted at build time."; \
  213.     echo " */"; \
  214.     echo ""; \
  215.     echo "#ifndef __SYSCALLTAB_H"; \
  216.     echo "#define __SYSCALLTAB_H"; \
  217.     echo ""; \
  218.     echo "#include <linux/kernel.h>"; \
  219.     echo ""; \
  220.     echo "struct syscall_info {"; \
  221.     echo "    const char *name;"; \
  222.     echo "} syscall_info_table[] = {"; \
  223.     sed -e '/^.*\.long /!d;s//    { "/;s/\(\([^/]*\)\/\)\{1\}.*/\2/; \
  224.         s/[ \t]*$$//g;s/$$/" },/;s/\("\)sys_/\1/g'; \
  225.     echo "};"; \
  226.     echo ""; \
  227.     echo "#define NUM_SYSCALL_INFO_ENTRIES ARRAY_SIZE(syscall_info_table)";\
  228.     echo ""; \
  229.     echo "#endif /* __SYSCALLTAB_H */" )
  230. endef
  231.  
  232. arch/sh/lib64/syscalltab.h: arch/sh/kernel/syscalls_64.S
  233.     $(call filechk,gen-syscalltab)
  234.  
  235. CLEAN_FILES += arch/sh/lib64/syscalltab.h \
  236.            include/asm-sh/machtypes.h
  237.